Setting Up a Sample
The actus-riskservice-ce component in ACTUS Quickstart includes a sample two-dimensional prepayment behavior risk model for analyzing prepayment risks in loan contracts.
1. Design Approach
This model uses two key parameters:
-
Interest Rate Differential:
- The difference between the current nominal interest rate on the loan and the current market interest rate for refinancing.
- If refinancing is favorable (i.e., market rate is lower than the loan rate), prepayment is more likely.
-
Remaining Loan Maturity:
- If the loan is close to maturity, refinancing costs may discourage prepayment.
- If maturity is far off, refinancing is more attractive.
Model Execution
- The model is called at specific simulation times to determine potential prepayment amounts.
- A lookup table (2D surface) maps the probability or amount of prepayment based on interest rate differentials and time to maturity.
This model is a basic example; more advanced risk models can be integrated using the ACTUS riskservice API.
2. Creating a Prepayment Model Instance
To define and store a sample prepayment model instance, use:
source putPpm01.txt
Loading Model Attributes from putPpm01.txt
into riskdata
Database
This command loads model attributes from putPpm01.txt
and saves them in the riskdata
database.
Attributes of ppm01
(Example Model)
- Risk Factor ID:
"ppm01"
(Unique identifier for the model) - Reference Rate ID:
"ust5Y"
(5-year US Treasury rate as benchmark) - Prepayment Event Times:
"2015-03-01"
"2015-09-01"
"2016-03-01"
- Lookup Surface: Defines prepayment probabilities for different interest rate differentials and maturities.
JSON Representation of ppm01
{
"riskFactorId": "ppm01",
"referenceRateId": "ust5Y",
"prepaymentEventTimes": ["2015-03-01", "2015-09-01", "2016-03-01"],
"surface": {
"interpolationMethod": "linear",
"extrapolationMethod": "constant",
"margins": [
{ "dimension": 1, "values": [0.03, 0.025, 0.02, 0.015, 0.01, 0.0, -0.05] },
{ "dimension": 2, "values": [0, 1, 2, 3, 5, 10] }
],
"data": [
[0.01, 0.05, 0.1, 0.07, 0.02, 0],
[0.01, 0.04, 0.8, 0.05, 0.01, 0],
[0, 0.02, 0.5, 0.03, 0.005, 0],
[0, 0.01, 0.3, 0.01, 0, 0],
[0, 0.01, 0.2, 0, 0, 0],
[0, 0, 0.1, 0, 0, 0],
[0, 0, 0, 0, 0, 0]
]
}
}
Prepayment Model Details
Lookup Surface
- Margins: Defines interest rate differentials (x-axis) and years until maturity (y-axis).
- Data: Specifies prepayment fractions for each combination of interest rate differential and maturity.
Adding the Prepayment Model to a Risk Scenario
To make this model available in a risk scenario, create a scenario called "scn02"
that includes "ppm01"
.
source putScn02.txt
Loading scn02
into the Riskdata Database
This command loads putScn02.txt
and saves "scn02"
in the riskdata
database, linking it to "ppm01"
.
Summary
-
Define a Prepayment Model Instance (
ppm01
)- Uses interest rate differential and loan maturity to estimate prepayment.
- Stored in
riskdata
usingputPpm01.txt
.
-
Store the Model in a Risk Scenario (
scn02
)- Links
ppm01
toscn02
usingputScn02.txt
.
- Links
-
Run Commands to Load the Model and Scenario
source putPpm01.txt # Create prepayment model
source putScn02.txt # Create scenario with model